"""测试UI相关的代码"""

from PyQt6 import QtWidgets, QtCore, QtGui
from output import Ui_MainWindow
import sys
from PyQt6.QtCore import Qt, QTimer

from PyQt6.QtGui import QPixmap, QPainter, QTransform
from PyQt6.QtCore import QPoint


'''UI相关-AI帮忙'''
#获取Group中的两个label的组合图片
def grab_group_labels(gbox, lbl1, lbl2):
    """
    gbox  : QGroupBox
    lbl1/2: 里面的两个 QLabel
    返回 : QPixmap（组合图）
    """
    
    # 1. 并集矩形（相对于 GroupBox）
    r1 = lbl1.geometry()          # QRect
    r2 = lbl2.geometry()
    united = r1.united(r2)        # 最小并集

    # 2. 创建画布
    out = QPixmap(united.size())
    out.fill(Qt.GlobalColor.transparent)

    # 3. 用 grab() 抓“当前显示内容”
    p = QPainter(out)
    p.drawPixmap(r1.topLeft() - united.topLeft(), lbl1.grab())
    p.drawPixmap(r2.topLeft() - united.topLeft(), lbl2.grab())
    p.end()
    
    ui.label_2.setPixmap(out)
    out.save("combo.png")
    print("已保存")
    return out

#旋转label中的图片
def rotate_image(label, angle):
    """
    将 QLabel 当前显示的图片按给定角度（逆时针）旋转，
    并把旋转后的图片重新设置回 QLabel。
    返回旋转后的 QPixmap 对象。
    """
    # 1. 取出原图
    src_pix = label.pixmap()
    if src_pix.isNull():
        # 如果 QLabel 没有图，尝试从 movie 或 picture 属性里取（略）
        return QPixmap()

    # 2. 构造旋转矩阵
    transform = QTransform()
    # 绕图片中心旋转
    transform.translate(src_pix.width() / 2, src_pix.height() / 2)
    transform.rotate(angle)
    transform.translate(-src_pix.width() / 2, -src_pix.height() / 2)

    # 3. 旋转
    rotated = src_pix.transformed(transform, Qt.TransformationMode.SmoothTransformation)

    # 4. 重新设置回 QLabel
    label.setPixmap(rotated)
    return rotated

#移动label
def move_label(label, dx, dy):
    
    pass

#获取leble的位置和目前的角度
def get_label_position(label):
    passs
#获取label前面80*80的像素，并将其投放到label_2上面
def get_label_image(label):
    pass
#检测目标像素与朝向的位置关系
def detect_target(label):
    pass
#根据PID调整目标朝向，使得目标朝向永远有黑色轨迹，每隔0.5s运动1m
def adjust_target(label):
    pass


if __name__ == "__main__":
    
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    
    #创建一个定时器，每隔一秒进行一次组合
    ui.timer = QTimer()
    ui.timer.timeout.connect(lambda: grab_group_labels(ui.groupBox, ui.label_4, ui.label))
    ui.timer.start(1000)#每一秒调用一次
    rotate_image(ui.label, 90)
    
    
    #->调用opencv来识别图片并进行输出
    
    sys.exit(app.exec())